﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Collections;
using DataLayer.Database;
using DataLayer.Class;
using DataLayer;

namespace WinProgProject2
{
    public partial class OncelikIslemleri : Form
    {
        ErrorLogService.Service1Client sv = new ErrorLogService.Service1Client();
        private bool yeniKayit;
        public OncelikIslemleri()
        {
            InitializeComponent();
        }

        private void OncelikIslemleri_Load(object sender, EventArgs e)
        {
            yeniKayit = true;
            lvDoldur();
        }

        private void lvDoldur()
        {
            try
            {
                lvOncelikler.Items.Clear();

                ArrayList oncelikler = MusteriDB.TumOncelikleriCek();
                int i = 0;
                foreach (Oncelik o in oncelikler)
                {
                    ListViewItem lvItem = new ListViewItem(o.Ad);
                    lvItem.SubItems.Add(o.Katsayi.ToString());
                    lvItem.SubItems.Add(o.BarajPuani.ToString());

                    lvItem.Tag = o;

                    if (i % 2 == 1)
                        lvItem.BackColor = Color.LightSalmon;
                    i++;


                    lvOncelikler.Items.Add(lvItem);
                }

            }
            catch (Exception ex)
            {
                MessageBox.Show(null, ex.Message + "(" + ex.InnerException + ")", "Hata", MessageBoxButtons.OK, MessageBoxIcon.Error);
                sv.errorEkle(Session.kullaniciKodu, ex.Message, 6, "Öncelik İşlemleri");
            }

        }

        private void btnYeni_Click(object sender, EventArgs e)
        {
            lvOncelikler.SelectedItems.Clear();
            yeniKayit = true;
            txtAd.Text = "";
            nudKatsayi.Value = 1;
            nudBarajPuani.Value = 0;
        }

        private void btnKaydet_Click(object sender, EventArgs e)
        {
            try
            {
                if (txtAd.Text == string.Empty)
                    throw new Exception("Öncelik adını giriniz.");

                if (yeniKayit)
                {
                    new Oncelik(txtAd.Text,(int)nudKatsayi.Value,(int)nudBarajPuani.Value).ekle();
                    btnYeni_Click(null,null);
                    
                }
                else
                {
                    new Oncelik((lvOncelikler.SelectedItems[0].Tag as Oncelik).OncelikID,txtAd.Text, (int)nudKatsayi.Value, (int)nudBarajPuani.Value).guncelle();
                    btnYeni_Click(null, null);
                }
                lvDoldur();
            }
            catch (Exception ex)
            {
                MessageBox.Show(null,ex.Message + "("+ex.InnerException+")","Hata",MessageBoxButtons.OK,MessageBoxIcon.Error);
                if(yeniKayit)
                    sv.errorEkle(Session.kullaniciKodu, ex.Message, 1, "Öncelik İşlemleri");
                else sv.errorEkle(Session.kullaniciKodu, ex.Message, 2, "Öncelik İşlemleri");
            }
        }

        private void lvOncelikler_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (lvOncelikler.SelectedItems.Count > 0)
            {
                yeniKayit = false;
                Oncelik o = lvOncelikler.SelectedItems[0].Tag as Oncelik;

                txtAd.Text = o.Ad;
                nudBarajPuani.Value = o.BarajPuani;
                nudKatsayi.Value = o.Katsayi;

                 dgwOncelikliMusteriler.DataSource = MusteriDB.onceligeSahipMusteriler(o.OncelikID);
            }
            else
            {
                btnYeni_Click(null,null);
            }
        }

        private void lnkSil_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            try
            {
                Oncelik o = lvOncelikler.SelectedItems[0].Tag as Oncelik;
                o.sil();
                MessageBox.Show(null, "Kayıt silindi.", "Bilgi", MessageBoxButtons.OK, MessageBoxIcon.Information);
                lvDoldur();
            }
            catch (ArgumentException)
            {
                MessageBox.Show(null,"Hiçbir kayıt seçilmedi.","Hata",MessageBoxButtons.OK,MessageBoxIcon.Error);
                sv.errorEkle(Session.kullaniciKodu, "Hiçbir kayıt seçilmedi.", 3, "Öncelik İşlemleri");
            }catch (Exception ex2)
            {
                MessageBox.Show(null,ex2.Message + "("+ex2.InnerException+")","Hata",MessageBoxButtons.OK,MessageBoxIcon.Error);
                sv.errorEkle(Session.kullaniciKodu, ex2.Message, 3, "Öncelik İşlemleri");
            }

        }


    }
}